package ge

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// gin 处理跨域访问
func Cors(ctx *gin.Context) {
	method := ctx.Request.Method
	origin := ctx.Request.Header.Get("Origin") //请求头部
	if origin != "" {
		//接收客户端发送的origin （重要！）
		ctx.Writer.Header().Set("Access-Control-Allow-Origin", origin)
		//服务器支持的所有跨域请求的方法
		ctx.Header("Access-Control-Allow-Methods", "OPTIONS,HEAD,DELETE,PUT,POST,PATCH,GET,TRACE,*")
		//允许跨域设置可以返回其他子段，可以自定义字段
		// c.Header("Access-Control-Allow-Headers", "content-type,*")
		ctx.Header("Access-Control-Allow-Headers", "token,Content-Type,Content-Length, Authorization, Accept,X-Requested-With,domain,zdy")
		// 允许浏览器（客户端）可以解析的头部 （重要）
		ctx.Header("Access-Control-Expose-Headers", "Content-Disposition")
		//设置缓存时间
		ctx.Header("Access-Control-Max-Age", "3600")
		//允许客户端传递校验信息比如 cookie (重要)
		ctx.Header("Access-Control-Allow-Credentials", "true")
	}

	//允许类型校验
	if method == "OPTIONS" {
		ctx.JSON(http.StatusOK, gin.H{"status": "success", "msg": "OK"})
	}

	ctx.Next()
}
